a11y: Add _gtk_cell_accessible_state_changed()
authorBenjamin Otte <otte@redhat.com>
Sun, 11 Dec 2011 05:37:05 +0000 (06:37 +0100)
committerBenjamin Otte <otte@redhat.com>
Fri, 16 Dec 2011 03:53:13 +0000 (04:53 +0100)
It's supposed to replace the old state_set calls.

gtk/a11y/gtkcellaccessible.c
gtk/a11y/gtkcellaccessible.h

index a4f1792b3be44142f3d71742f492d8686e39616e..d24dd435bb8564f380d7939727327af2b8a8edca 100644 (file)
@@ -495,3 +495,39 @@ _gtk_cell_accessible_get_state (GtkCellAccessible *cell)
 
   return _gtk_cell_accessible_parent_get_renderer_state (GTK_CELL_ACCESSIBLE_PARENT (parent), cell);
 }
+
+/**
+ * _gtk_cell_accessible_state_changed:
+ * @cell: a #GtkCellAccessible
+ * @added: the flags that were added from @cell
+ * @removed: the flags that were removed from @cell
+ *
+ * Notifies @cell of state changes. Multiple states may be added
+ * or removed at the same time. A state that is @added may not be
+ * @removed at the same time.
+ **/
+void
+_gtk_cell_accessible_state_changed (GtkCellAccessible    *cell,
+                                    GtkCellRendererState  added,
+                                    GtkCellRendererState  removed)
+{
+  AtkObject *object;
+  guint i;
+
+  g_return_if_fail (GTK_IS_CELL_ACCESSIBLE (cell));
+  g_return_if_fail ((added & removed) == 0);
+
+  object = ATK_OBJECT (cell);
+
+  for (i = 0; i < G_N_ELEMENTS (state_map); i++)
+    {
+      if (added & state_map[i].renderer_state)
+        atk_object_notify_state_change (object, 
+                                        state_map[i].atk_state,
+                                        !state_map[i].invert);
+      if (added & state_map[i].renderer_state)
+        atk_object_notify_state_change (object, 
+                                        state_map[i].atk_state,
+                                        state_map[i].invert);
+    }
+}
index 730c21adac7d8b9c4e10a09fb440e0dd9b6a83e5..1e14ad4060fc698946e08502f725c81647483072 100644 (file)
@@ -51,6 +51,9 @@ GType    _gtk_cell_accessible_get_type      (void);
 
 GtkCellRendererState
          _gtk_cell_accessible_get_state     (GtkCellAccessible *cell);
+void     _gtk_cell_accessible_state_changed (GtkCellAccessible *cell,
+                                             GtkCellRendererState added,
+                                             GtkCellRendererState removed);
 void     _gtk_cell_accessible_set_cell_data (GtkCellAccessible *cell);
 
 void     _gtk_cell_accessible_initialise    (GtkCellAccessible *cell,